class UserManager {
    constructor() {
      this.users = new Map(); // userId -> {id, name, ws, online}
      this.userSockets = new Map(); // socket -> user
    }
  
    // 添加用户
    addUser(userId, userName, ws) {
      const user = {
        id: userId,
        name: userName,
        ws: ws,
        online: true,
        inCall: false
      };
      
      this.users.set(userId, user);
      this.userSockets.set(ws, user);
      
      console.log(`用户 ${userName} (${userId}) 上线`);
      return user;
    }
  
    // 移除用户
    removeUser(ws) {
      const user = this.userSockets.get(ws);
      if (user) {
        user.online = false;
        this.users.delete(user.id);
        this.userSockets.delete(ws);
        console.log(`用户 ${user.name} 下线`);
        return user;
      }
      return null;
    }
  
    // 获取用户
    getUser(userId) {
      return this.users.get(userId);
    }
  
  // 获取所有在线用户（包括通话中的用户）
  getOnlineUsers() {
    const onlineUsers = [];
    for (const [id, user] of this.users) {
      if (user.online) {
        onlineUsers.push({
          id: user.id,
          name: user.name,
          inCall: user.inCall,
          status: user.inCall ? '通话中' : '在线'
        });
      }
    }
    return onlineUsers;
  }
  
    // 设置用户通话状态
    setUserInCall(userId, inCall) {
      const user = this.users.get(userId);
      if (user) {
        user.inCall = inCall;
      }
    }
  
    // 通过WebSocket获取用户
    getUserBySocket(ws) {
      return this.userSockets.get(ws);
    }
  }
  
  module.exports = UserManager;